Поделиться через


Структура System.Nullable<T>

Замечание

В этой статье приводятся дополнительные замечания к справочной документации по этому API.

Класс Nullable представляет тип значения, который можно назначить null.

Тип называется nullable, если ему может быть присвоено значение или null, что означает отсутствие какого-либо значения у типа. По умолчанию все ссылочные типы, такие как String, допускают значение NULL, в то время как все типы значений, такие как Int32, не допускают его.

В C# и Visual Basic значения помечаются как nullable с помощью нотации после типа значения. Например, int? в C# или Integer? в Visual Basic объявляет целочисленный тип значения, который можно назначить null.

Структура Nullable<T> поддерживает использование только типа значения в качестве типа, допускающего значение NULL, так как ссылочные типы имеют значение NULL по умолчанию.

Класс Nullable обеспечивает дополнительную поддержку Nullable<T> структуры. Класс Nullable поддерживает получение базового типа типа, допускающего значение NULL, и операции сравнения и равенства пар типов, допускающих значение NULL, базовый тип которого не поддерживает универсальные операции сравнения и равенства.

Основные свойства

Двумя основными элементами Nullable<T> структуры являются HasValue и Value свойства. HasValue Если свойство объекта Nullable<T> имеет значениеtrue, значение объекта можно получить с помощью Value свойства. Если свойство HasValue имеет значение false, значение объекта неопределено, и попытка доступа к свойству Value вызывает исключение InvalidOperationException.

Упаковка и распаковка

Если допускающий значение NULL тип упаковывается, общая среда выполнения автоматически упаковывает базовое значение объекта Nullable<T>, а не сам объект Nullable<T>. То есть, если свойство HasValue равно true, содержимое свойства Value упаковывается. Если базовое значение типа, допускающего значение NULL, распаковано, среда CLR создает новую Nullable<T> структуру, инициализируемую базовым значением.

HasValue Если свойство типа, допускающего значение NULL, равно false, то результатом операции упаковки является null. Следовательно, если тип, допускающий значение NULL, передается методу, который ожидает, что аргумент будет объектом, этот метод должен быть готов к обработке ситуации, когда аргумент является null. При null распаковке в тип nullable, среда выполнения CLR создает новую Nullable<T> структуру и инициализирует её HasValue свойство значением false.

Компоненты среды выполнения Windows

Вы можете включить Nullable<T> как член структуры, экспортируемой в библиотеку WinMD.